home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-03-15 | 3.3 KB | 145 lines | [TEXT/MPS ] |
- PROCEDURE Redraw4DWindows;
- CONST EX_REDRAW = 46;
- VAR Blk4D:ParmBlock;
- BEGIN
- Call4D(EX_REDRAW,Blk4D);
- END; { Redraw4DWindows }
-
- FUNCTION NumToolBoxTraps:INTEGER;
- BEGIN
- IF NGetTrapAddress(_InitGraf,ToolTrap)=NGetTrapAddress($AA6E,ToolTrap) THEN NumToolBoxTraps:=$200
- ELSE NumToolBoxTraps:=$400;
- END; { NumToolBoxTraps }
-
- FUNCTION GetTrapType(TheTrap:INTEGER):TrapType;
- CONST TrapMask = $0800;
- BEGIN
- IF BAnd(TheTrap,TrapMask)>0 THEN GetTrapType:=ToolTrap ELSE GetTrapType:=OSTrap;
- END; { GetTrapType }
-
- FUNCTION TrapAvailable(TheTrap:INTEGER):BOOLEAN;
- VAR TheType:TrapType;
- BEGIN
- TheType:=GetTrapType(TheTrap);
- IF TheType=ToolTrap THEN
- BEGIN
- TheTrap:=BAnd(TheTrap,$07FF);
- IF TheTrap>=NumToolBoxTraps THEN TheTrap:=_Unimplemented;
- END;
- TrapAvailable:=NGetTrapAddress(TheTrap,TheType)<>NGetTrapAddress(_Unimplemented,ToolTrap);
- END;
-
- FUNCTION GetScreenRect(AtLocation:Point):Rect;
- VAR DeskPort:GrafPtr;
- MyGD,CurGD:GDHandle;
- Screen:Rect;
- BEGIN
- MyGD:=NIL;
- IF TrapAvailable(_GetGDevice) THEN
- BEGIN
- IF LongInt(AtLocation)<>$80008000 THEN
- BEGIN
- CurGD:=GetDeviceList;
- WHILE (CurGD<>NIL) DO
- BEGIN
- IF PtInRect(AtLocation,CurGD^^.GDRect) THEN
- BEGIN
- MyGD:=CurGD;
- CurGD:=NIL;
- END
- ELSE CurGD:=GetNextDevice(CurGD);
- END;
- IF MyGD=NIL THEN MyGD:=GetGDevice;
- END
- ELSE MyGD:=GetGDevice;
- END;
- IF MyGD<>NIL THEN
- BEGIN
- Screen:=MyGD^^.GDRect;
- IF MyGD=GetMainDevice THEN WITH Screen DO Top:=Top+IntegerPtr(MBarHeight)^;
- END
- ELSE
- BEGIN
- GetWMgrPort(DeskPort);
- Screen:=DeskPort^.PortRect;
- Screen.Top:=IntegerPtr(MBarHeight)^;
- END;
- GetScreenRect:=Screen;
- END; { GetScreenRect }
-
- PROCEDURE GetItemRect(MyDlg:DialogPtr;MyItem:INTEGER;Var ItemRect:Rect);
- VAR Kind:INTEGER;
- Content:Handle;
- BEGIN
- GetDItem(MyDlg,MyItem,Kind,Content,ItemRect);
- END; { GetItemRect }
-
- PROCEDURE DrawOKButton(MyDlg:DialogPtr);
- VAR CurPort:GrafPtr;
- ItemRect:Rect;
- BEGIN
- GetPort(CurPort);
- SetPort(MyDlg);
- ClipRect(MyDlg^.PortRect);
- GetItemRect(MyDlg,OKButton,ItemRect);
- PenNormal;
- PenSize(3,3);
- InsetRect(ItemRect,-4,-4);
- FrameRoundRect(ItemRect,16,16);
- PenNormal;
- SetPort(CurPort);
- END; { DrawOKButton }
-
- PROCEDURE GetDlgLocation(DlgID:INTEGER;VAR H,V:INTEGER;VAR DlgFrame:Rect;MoveH,MoveV:BOOLEAN);
- VAR DlgTemplate:DialogTHndl;
- BEGIN
- WITH GetScreenRect(Point($80008000)) DO
- BEGIN
- IF MoveH THEN H:=LoWrd(BSR(Right-Left,1)) ELSE H:=0;
- IF MoveV THEN V:=LoWrd(BSR(Bottom-Top,1)) ELSE V:=0;
- END;
- DlgTemplate:=DialogTHndl(GetResource('DLOG',DlgID));
- DlgFrame:=DlgTemplate^^.BoundsRect;
- WITH DlgFrame DO
- BEGIN
- IF MoveH THEN
- BEGIN
- H:=H-LoWrd(BSR(Right-Left,1));
- OffSetRect(DlgFrame,-Left+H,0);
- END
- ELSE H:=Left;
- IF MoveV THEN
- BEGIN
- V:=V-LoWrd(BSR(Bottom-Top,1));
- OffSetRect(DlgFrame,0,-Top+V);
- END
- ELSE V:=Top;
- END;
- InsetRect(DlgFrame,-8,-8);
- END; { GetDlgLocation }
-
- PROCEDURE ShowDevToolDlg;
- VAR Click,DH,DV,DlgID:INTEGER;
- MyDlg:DialogPtr;
- CurPort:GrafPtr;
- DlgRect:Rect;
- BEGIN
- GetPort(CurPort);
- DlgID:=GetResNum('4BNX','DLOG',DevToolDlgID);
- MyDlg:=GetNewDialog(DlgID,Nil,Pointer(-1));
- IF MyDlg<>NIL THEN
- BEGIN
- MySetCursor(0);
- GetDlgLocation(DlgID,DH,DV,DlgRect,TRUE,FALSE);
- DV:=38;
- MoveWindow(MyDlg,DH,DV,FALSE);
- ShowWindow(MyDlg);
- SetPort(MyDlg);
- DrawOKButton(MyDlg);
- REPEAT ModalDialog(Nil,Click) UNTIL (Click=OKButton);
- DisposDialog(MyDlg);
- SetPort(CurPort);
- Redraw4DWindows;
- END;
- END; { ShowDevToolDlg }
-